Play frameworkメモ -Linux環境での自動起動
playの自動起動スクリプト
実装、テストが完了し、いよいよ本番環境での動作となると、アプリケーションの起動や終了も制御する必要があります。 Play frameworkでは通常play runで起動しますが、バックグラウンドで実行したい場合はplay startコマンドでアプリケーションを起動します。
今回はシステムの起動時にアプリケーションも起動させたかったので、ここを参考に起動スクリプトを作成しました。 これを使用すれば、/etc/rc.d/init.d/play start/stop/status/cleanなどの コマンドが使用できるようになり、ランレベルの設定で自動起動も可能になります。
起動スクリプトを作成する
まずは/etc/rc.dディレクトリにリンク先にあるスクリプトをplayという名前で保存します。 下記に変更した点のみを記述します。パスやユーザー名は各環境にあわせてください。
・・・ # Path to play install folder PLAY_HOME=/yourplayhome/play-1.2.4 PLAY=$PLAY_HOME/play # Path to the JVM JAVA_HOME=/yourjavahome/jdk1.6.0_30 export JAVA_HOME # User running the Play process USER=username # Path to the application APPLICATION_PATH=/yourappname/appname # source function library . /etc/init.d/functions RETVAL=0 start() { echo -n "Starting Play service: " su $USER -c "${PLAY} start ${APPLICATION_PATH} --%prod >/dev/null" RETVAL=$? } ・・・・
実際に下記箇所でアプリケーションを起動しているのです。 なお、--%prodは本番環境用で起動するために付け足しています。 オプションが必要な場合はこの行に記述すればよいでしょう。
su $USER -c "${PLAY} start ${APPLICATION_PATH} --%prod >/dev/null"
次に作成したファイルにパーミッションを与え、サービス起動設定を行います。
$ chmod +x /etc/init.d/play $ chkconfig --add /etc/init.d/play $ chkconfig play on
これでシステム起動時にplayコマンドが実行されるようになりました。 もし明示的に実行したい場合、下記のようにserviceコマンドで実行します。
# service play start # service play stop # service play status
これでシステム起動時にplayアプリケーションが実行されるようになりました。 注意点として、play startの途中にstopを実行すると、プロセスが残ってstopコマンドでも停止できなくなるので注意してください。 ※もしそうなった場合はkillコマンドでプロセス番号を指定して停止